如何查看被mount --bind目录的内容
·
mount --bind
当你用:
mount -o bind /new-disk /var/lib
绑定挂载后的 /var/lib 就被 新的分区内容覆盖
原来真实的 /var/lib 内容仍然在磁盘上,但无法通过 /var/lib 直接访问
想在 不 umount 的情况下 查看原来目录的内容,有几种经典做法:
再把原始目录挂载到其他路径(最常用)
mkdir /mnt/origin_root
mount --bind / /mnt/origin_root # 临时挂载根不推荐;下面是推荐方式
直接通过 /proc/[pid]/root 访问(最常见最干净) 更推荐:
找到任意仍在主根下运行的进程,如 systemd :
ls -l /proc/1/root/var/lib
# 但最好再 bind 一层:
mkdir /mnt/original
mount --bind /proc/1/root/var/lib /mnt/original
ls /mnt/original
# 你就可以浏览原来 /var/lib 中的内容了。
# 不需要 umount,不需要停止业务,不影响现有 /var/lib。
直接通过 /proc/[pid]/root 访问
# 任意 pid 都行,例如:
ls /proc/1/root/var/lib
# 就是没被覆盖的 /var/lib。
# 但这种方式只是临时查看,比 bind 挂载不方便操作。
提前创建 “逃生入口”(经验技巧)
# 以后遇到类似场景:
mkdir /var/lib.real
mount --bind /var/lib /var/lib.real
mount --bind /newdisk /var/lib
# 这样以后变成:
# /var/lib → 新分区
# /var/lib.real → 原目录仍可访问
# 但必须在第一次 bind 前做。
最推荐办法总结
mkdir /mnt/original
mount --bind /proc/1/root/var/lib /mnt/original
ls /mnt/original